1. Field of the Invention
The present invention generally relates to operating systems for computers and devices comprising computers. More specifically, the invention relates to a general purpose software platform and toolkit that can be used in various settings, such as in robotics and automation, to rapidly and affordably create solutions and functional products of all kinds, shapes, and sizes.
2. Description of the Related Art
There are many applications, domains, and resulting structures for robots. Examples range from and include unmanned autonomous robotic vehicles in a military domain, surveillance and security robots in a commercial domain, robotic manipulator arms in an industrial domain, medicinal transport robots in a professional service domain, vacuum cleaning robots in a home, legged entertainment robots for personal use, among many others. The resulting structures for these robots assume all sorts of shapes and sizes. The mechanisms, electronics, sensors, actuators, and their interconnections all also vary across robots. Furthermore, the software that embodies the behavior of a robot also varies across robotics applications.
Existing approaches to providing robotics solutions have been highly specialized to a particular application, domain, and selected structure. As a result, typical robotics product architectures are inherently monolithic, lack inter-operability, lack use of mainstream open standards, and end up being costly. For example, if a new robotics application for a particular environment and domain is desired, the combination of underlying mechanisms, electronics, sensors, and actuators are selected and configured and all of the software for interacting with such hardware as well as the software for embodying the desired application behavior is either created from scratch and/or laboriously repurposed from an existing specialized robotics application, domain, and/or structure to the new robotics application, domain, and/or structure. Unlike applications in other industries where component-based software development is more common, in existing robotics applications, such drawbacks exist for each new robotics application that is to be developed, both across organizations and within the same organization. Even if a new sensor, means of actuation, or new behavior is added to an existing robotics application, a laborious process of integrating new software into a monolithic architecture ensues.
For example, U.S. Pat. No. 6,889,118, issued to Evolution Robotics, describes a method of providing hardware abstraction for robot control software. More specifically, the patent discloses that the inventors were motivated to develop a hardware-independent abstraction layer for robotics. The invention detects a hardware configuration for the robot, provides a plurality of resource drivers for the robot, receives a request from the robot control software to use a type of resource, automatically selects a resource from the available resources that corresponds to the type of resource requested by the robot control software, and exchanges a second information with a low-level device driver corresponding to the resource.
In addition, U.S. Pat. No. 6,636,781, issued to University of Southern California, describes a method of discovering a communication connection to autonomous agents communicatively coupled together in a reconfigurable network topology. Each robot module comprises one or more actuators to cause movement of the robot module and a communication interface to send and receive messages to and from the other robot modules.
Further, U.S. Pat. No. 6,175,206, issued to Kawasaki, describes a robot information processing apparatus comprising: 1) a server processing unit that includes detecting means for detecting the positions of a plurality of axes of a robot body, which serves as an object to be driven, and for outputting detection data; and 2) first communication means for transmitting the detection data outputted from the detecting means.
Also, U.S. Pat. No. 6,405,099, issued to SMC Kabushiki Kaisha, describes an automatic control system comprising a server offered by a service provider that stores control applets to control a particular control object device and a control device comprising a control object device and a computer device to control said control object device. The control object device comprises an actuator. Control applets stored in the server can be JAVA applets stated in the JAVA language.
Yet another example of a vertical solution for robotics is U.S. Pat. No. 6,658,325, issued to Stephen Zweig. This patent describes a mobile robot with an onboard web server, telecommunications means to link the onboard web server with the internet, and onboard telecommunications means to establish additional short-range bi-directional digital radio links with a plurality of non-internet connected external computer controlled devices.
U.S. Pat. No. 6,513,058, issued to Roy-G-Biv, describes a system for allowing an application program to communicate with any one of a group of supported hardware devices.
U.S. Pat. No. 6,078,747, issued to James Jewitt, describes a computer-implemented method of interfacing between a plurality of application programs and a physical device.
U.S. Pat. No. 6,266,577, issued to GTE Internetworking, describes a robot network having a plurality of robots, wherein each of the plurality of robots performs an assigned task according to a control logic.
U.S. Pat. No. 5,124,918, issued to Case Western Reserve, describes an autonomous robotic locomotion control system.
U.S. patent application publication number 2005/0182518, assigned to Evolution Robotics, describes a method of visual and simultaneous localization and mapping, using visual features to recognize landmarks in an environment.
Japanese patent JP-02182688A2, issued to Kobe Steel, describes a method of making robots cooperate with each other by preliminarily providing each robot with a unit motion program for executing a concrete unit motion independent of the robots.
Japanese patent JP-2003145462 A2, assigned to Kawasaki Heavy, describes a robot cooperative control system which can prevent any deviation of the operation of each robot while maintaining a plurality of control devices in a constantly synchronous manner with each other.
PCT Publication WO 2005103848, assigned to Frontline Robotics, describes a control system for a mobile autonomous system, wherein a robot leader can command and control a platoon of robotic agent nodes.
Although there have been numerous specific solutions for various specific needs in the automation and robotics fields, there still exists a need for a broad solution to programming and implementing software and hardware in these fields. Furthermore, in order for there to be proliferation of robotics and automation across the broader market landscape, time and cost to deploy and integrate end-user robotics and automation solutions must be dramatically lowered. Two primary points of integration within an end-user robotics and automation solution exist. One primary integration point is between a vertical end-user robotics or automation application and an underlying robotics or automation platform. The other primary integration point is between a robotics or automation software platform and underlying plug-and-play mobility, sensor, and actuator hardware. The monolithic robotics and automation architectures to date blur the boundaries of these two integration points and accentuate the need for a general purpose robotics and/or automation software platform bridging the gap and complexities between robotics and automation application software and hardware.